package com.woniuxy.controller;

import com.github.pagehelper.PageInfo;
import com.woniuxy.entity.AdminMessage;
import com.woniuxy.entity.ResponseEntity;
import com.woniuxy.service.AdminMessageService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import net.sf.json.JSONObject;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.Map;

/**
 * (AdminMessage)管理员信息表控制层
 *
 * @author zjx
 * @since 2021-05-14 19:42:00
 */
@RestController
@RequestMapping("adminMessage")
@Api(tags="管理员接口")
public class AdminMessageController {
    /**
     * 服务对象
     */
    @Resource
    private AdminMessageService adminMessageService;

    /**
     * 通过主键查询单条数据
     *
     * @param id 主键
     * @return 单条数据
     */
    @ApiOperation("用管理员id查询")
    @GetMapping("selectOne/{id}")
    public ResponseEntity selectOne(@ApiParam("管理员id") @PathVariable("id") Integer id) {
        AdminMessage adminMessage = this.adminMessageService.queryById(id);
        return new ResponseEntity(200, "查询单个管理员信息成功", adminMessage);
    }

    /**
     * 分页查询(可以用于搜索)
     *
     * @param map 封装了分页信息和管理员信息
     * @return ResponseEntity 实例对象
     *
     */
    @ApiOperation("查询所有并分页:传入map,map中含startPage,pageSize和AdminMessage实体类")
    @PostMapping("selectAll")
    public ResponseEntity selectAll(@RequestBody Map<String,Object> map){
        int startPage = (int) map.get("startPage");
        int pageSize = (int) map.get("pageSize");
        JSONObject jsonObject=JSONObject.fromObject(map.get("adminMessage"));
        AdminMessage adminMessage = (AdminMessage)JSONObject.toBean(jsonObject, AdminMessage.class);
        PageInfo<AdminMessage> pageInfo = this.adminMessageService.queryAllPage(startPage,pageSize,adminMessage);
        return new ResponseEntity(200, "分页查询管理员信息成功", pageInfo);
    }

    /**
     * 新增一条管理员信息
     *
     * @param adminMessage 管理员信息
     * @return ResponseEntity 实例对象
     */
    @ApiOperation("新增一条管理员信息:传入管理员对象")
    @PostMapping("addAdmin")
    public ResponseEntity addAdmin( @RequestBody AdminMessage adminMessage){
        String result = this.adminMessageService.insert(adminMessage);
        return new ResponseEntity(200, result, null);
    }

    /**
     * 通过id删除管理员信息
     *
     * @param id 管理员id
     * @return  ResponseEntity 实例对象
     */
    @ApiOperation("删除一条管理员信息:传入管理员id")
    @GetMapping("deleteAdmin")
    public ResponseEntity deleteAdmin(@ApiParam("管理员id") int id){
        String result = this.adminMessageService.deleteById(id);
        return new ResponseEntity(200, result, null);
    }

    /**
     * 通过传入的管理员信息实体类修改信息,并返回修改后的管理员信息实体
     *
     * @param adminMessage 管理员信息实体类
     * @return ResponseEntity 实例对象
     */
    @ApiOperation("修改一条管理员信息:传入管理员对象")
    @PostMapping("updateAdmin")
    public ResponseEntity updateAdmin(@RequestBody AdminMessage adminMessage){
        String result = this.adminMessageService.update(adminMessage);
        return new ResponseEntity(200, result, null);
    }
}
